package com.sinog.front.controller.biz;

import com.sinog.core.model.UserDTO;
import com.sinog.core.util.JsonUtil;
import com.sinog.core.utilbean.Result;
import com.sinog.front.config.idempotent.Idempotent;
import com.sinog.front.config.log.Log;
import com.sinog.front.feign.biz.BjgzInfoService;
import com.sinog.front.service.user.UserFacade;
import org.apache.commons.collections4.map.HashedMap;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.util.List;
import java.util.Map;

/**
 * @desc 安置帮教管理 - 帮教工作信息管理  PrisonerHelpController
 * @author sunsf
 * @date 2020-02-07-13:51
 */
@RestController
public class PrisonerHelpController {

    @Resource
    private UserFacade userService;
    @Resource
    private BjgzInfoService bjgzInfoService;

    /**
     * 安置帮教管理 - 帮教工作信息管理 - 年度鉴定 - 列表
     * @param pageIndex pageIndex
     * @param pageSize pageSize
     * @param sortField 排序字段
     * @param sortOrder 排序方式
     * @param request request
     * @return String
     */
    @RequestMapping("/azbj/azbjgl/azgzgl/view/getJdInfoList")
    public String getJdInfoList(Integer pageIndex,Integer pageSize,
                                @RequestParam(required = false) String sortField,
                                @RequestParam(required = false) String sortOrder,HttpServletRequest request) {
        UserDTO user = userService.getAuthentication();
        Map<String,Object> map = new HashedMap<>();
        map.put("key",request.getParameter("querykey"));
        map.put("pinggu",request.getParameter("pinggu"));
        map.put("departId",user.getDepartid());
        map.put("level",Integer.parseInt(user.getLevel()));
        map.put("sortField",sortField);
        map.put("sortOrder",sortOrder);
        return bjgzInfoService.getJdInfoList(pageIndex,pageSize,map);
    }

    /**
     * 安置帮教管理 - 帮教工作信息管理 - 救助管理 - 救助 - 列表
     * @param priNum 服刑人员编号
     * @return List<Map < String,Object>>
     */
    @RequestMapping("/azbj/azbjgl/bjgzgl/view/getJzInfoList")
    public List<Map<String,Object>> getJzInfoList(@RequestParam(required = false, defaultValue = "-1") String priNum) {
        return bjgzInfoService.getJzInfoList(priNum);
    }

    /**
     * 安置帮教管理 - 帮教工作信息管理 - 帮教管理 - 帮教 - 就业信息列表
     * @param priNum 服刑人员编号
     * @return List<Map < String,Object>>
     */
    @RequestMapping("/azbj/azbjgl/bjgzgl/view/getBjJyxxInfoList")
    public List<Map<String,Object>> getBjJyxxInfoList(
            @RequestParam(required = false, defaultValue = "-1") String priNum) {
        return bjgzInfoService.getBjJyxxInfoList(priNum);
    }

    /**
     * 安置帮教管理 - 帮教工作信息管理 - 帮教管理 - 帮教 - 培训信息列表
     * @param priNum 服刑人员编号
     * @return List<Map < String,Object>>
     */
    @RequestMapping("/azbj/azbjgl/bjgzgl/view/getBjPxjgInfoList")
    public List<Map<String,Object>> getBjPxjgInfoList(
            @RequestParam(required = false, defaultValue = "-1") String priNum) {
        return bjgzInfoService.getBjPxjgInfoList(priNum);
    }

    /**
     * 帮教工作信息管理管理 - 帮教 - 帮教信息 - 自主创业
     * @param priNum 服刑人员编号
     * @return List<Map < String,Object>>
     */
    @RequestMapping("/azbj/azbjgl/bjgzgl/view/getBjZzcyInfoList")
    public List<Map<String,Object>> getBjZzcyInfoList(
            @RequestParam(required = false, defaultValue = "-1") String priNum) {
        return bjgzInfoService.getBjZzcyInfoList(priNum);
    }

    /**
     * 安置帮教管理 - 帮教工作信息管理 - 帮教管理 - 帮教 - 列表
     * @param priNum 服刑人员编号
     * @return List<Map < String,Object>>
     */
    @RequestMapping("/azbj/azbjgl/bjgzgl/view/getBjInfoList")
    public List<Map<String,Object>> getBjInfoList(@RequestParam(required = false, defaultValue = "-1") String priNum) {
        return bjgzInfoService.getBjInfoList(priNum);
    }

    /**
     * 安置帮教管理 - 帮教工作信息管理 - 救助管理 - 救助 - 保存
     * @param request request
     * @param data 业务数据
     * @return Result
     */
    @Log(type = "新增", value = "救助工作功能操作，参数中有id为编辑【更新】，没id为新增【新增】")
    @Idempotent(paramPos = 1)
    @PostMapping("/azbj/azbjgl/bjgzgl/saveJzInfo")
    public Result saveJzInfo(HttpServletRequest request,
                             @RequestParam(required = false, defaultValue = "-1") String data) {
        UserDTO user = userService.getAuthentication();
        String edit = JsonUtil.getValueFromJsonstrByKey(data, "edit");
        return bjgzInfoService.saveJzInfo(data,user,edit);
    }

    /**
     * 安置帮教管理 - 帮教工作信息管理 - 救助管理 - 救助 - 删除
     * @param request request
     * @param jzId 救助编号
     * @param priNum 服刑人员编号
     * @return Result
     */
    @Log(type = "删除", value = "删除救助信息")
    @Idempotent(paramPos = {0,1})
    @RequestMapping("/azbj/azbjgl/azgzgl/view/delJzInfoAction")
    public Result delJzInfoAction(HttpServletRequest request,
                                  @RequestParam(required = false, defaultValue = "-1") String jzId,
                                  @RequestParam(required = false, defaultValue = "-1") String priNum) {
        return bjgzInfoService.delJzInfoAction(jzId,priNum);
    }

    /**
     * 安置帮教管理 - 帮教工作信息管理 - 帮教管理 - 帮教 - 保存
     * @param data data
     * @return Result
     */
    @Log(type = "新增", value = "帮教工作功能操作，参数中有id为编辑【更新】，没id为新增【新增】")
    @Idempotent()
    @PostMapping("/azbj/azbjgl/bjgzgl/saveBjInfo")
    public Result saveBjInfo(HttpServletRequest request,
                             @RequestParam(required = false, defaultValue = "-1") String data) {
        UserDTO user = userService.getAuthentication();
        return bjgzInfoService.saveBjInfo(data,user);
    }

    /**
     * 帮教工作管理--帮教管理--帮教信息--党政及家庭教育保存
     * @param request request
     * @param data 业务数据
     * @return Result
     */
    @Log(type = "新增", value = "帮教信息--党政及家庭教育，参数中有id为编辑【更新】，没id为新增【新增】")
    @RequestMapping("/azbj/azbjgl/bjgzgl/saveBjDzInfo")
    public Result saveBjDzInfo(HttpServletRequest request,
                               @RequestParam(required = false, defaultValue = "-1") String data) {
        UserDTO user = userService.getAuthentication();
        return bjgzInfoService.saveBjDzInfo(data,user);
    }

    /**
     * 帮教工作管理--帮教管理--帮教信息--社会组织保存
     * @param request request
     * @param data 业务数据
     * @return Result
     */
    @Log(type = "新增", value = "帮教信息--帮教社会组织保存，参数中有id为编辑【更新】，没id为新增【新增】")
    @Idempotent(paramPos = {1})
    @RequestMapping("/azbj/azbjgl/bjgzgl/saveBjShzzInfo")
    public Result saveBjShzzInfo(HttpServletRequest request,
                                 @RequestParam(required = false, defaultValue = "-1") String data) {
        UserDTO user = userService.getAuthentication();
        return bjgzInfoService.saveBjShzzInfo(data,user);
    }

    /**
     * 帮教工作管理--帮教管理--帮教信息--志愿者保存
     * @param request request
     * @param data 业务数据
     * @return Result
     */
    @Log(type = "新增", value = "帮教信息--志愿者保存，参数中有id为编辑【更新】，没id为新增【新增】")
    @Idempotent(paramPos = {1})
    @RequestMapping("/azbj/azbjgl/bjgzgl/saveBjZyzInfo")
    public Result saveBjZyzInfo(HttpServletRequest request,
                                @RequestParam(required = false, defaultValue = "-1") String data) {
        UserDTO user = userService.getAuthentication();
        return bjgzInfoService.saveBjZyzInfo(data,user);
    }

    /**
     * 帮教工作管理 - 帮教管理 - 帮教信息 - 排查保存
     * @param request request
     * @param data 业务数据
     * @return Result
     */
    @Log(type = "新增", value = "帮教信息--排查保存，参数中有id为编辑【更新】，没id为新增【新增】")
    @Idempotent(paramPos = {1})
    @RequestMapping("/azbj/azbjgl/bjgzgl/saveBjPcInfo")
    public Result saveBjPcInfo(HttpServletRequest request,
                               @RequestParam(required = false, defaultValue = "-1") String data) {
        UserDTO user = userService.getAuthentication();
        return bjgzInfoService.saveBjPcInfo(data,user);
    }

    /**
     * 安置帮教管理 - 帮教工作信息管理 - 帮教管理 - 帮教 - 删除
     * @param request request
     * @param pp 帮教标志位
     * @param priNum 服刑人员编号
     * @return Result
     */
    @Log(type = "删除", value = "删除帮教信息")
    @Idempotent(paramPos = {1,2})
    @RequestMapping("/azbj/azbjgl/azgzgl/view/delBjInfoAction")
    public Result delBjInfoAction(HttpServletRequest request,
                                  @RequestParam(required = false, defaultValue = "-1") String pp,
                                  @RequestParam("priNum") String priNum) {
        return bjgzInfoService.delBjInfoAction(pp,priNum);
    }

    /**
     * 帮教工作管理 - 年度鉴定 - 鉴定 - 保存
     * @param request request
     * @param data 业务数据
     * @return Result
     */
    @Log(type = "新增", value = "帮教工作管理--年度鉴定，参数中有id为编辑【更新】，没id为新增【新增】")
    @Idempotent(paramPos = 1)
    @PostMapping("/azbj/azbjgl/bjgzgl/saveJdInfo")
    public Result saveJdInfo(HttpServletRequest request,
                             @RequestParam(required = false, defaultValue = "-1") String data) {
        UserDTO user = userService.getAuthentication();
        return bjgzInfoService.saveJdInfo(data, user);
    }

    /**
     * 安置帮教管理 - 帮教工作信息管理 - 年度鉴定 - 鉴定 - 列表
     * @param pageIndex 起始页
     * @param pageSize 止页
     * @param request request
     * @return String
     */
    @RequestMapping("/azbj/azbjgl/azgzgl/view/getJdBaseInfoList")
    public String getJdBaseInfoList(Integer pageIndex,Integer pageSize,HttpServletRequest request) {
        Map<String,Object> map = new HashedMap<>(1);
        String priNum = request.getParameter("priNum");
        map.put("priNum",priNum);
        return bjgzInfoService.getJdBaseInfoList(pageIndex,pageSize,map);
    }

    /**
     * 安置帮教管理 - 帮教工作信息管理 - 年度鉴定 - 鉴定 - 删除
     * @param request request
     * @param id 年度鉴定编号
     * @param priNum 服刑人员编号
     * @return Result
     */
    @Log(type = "删除", value = "删除年度鉴定")
    @Idempotent(paramPos = {1,2})
    @RequestMapping("/azbj/azbjgl/azgzgl/toDelAppraise")
    public Result toDelAppraise(HttpServletRequest request,
                                @RequestParam(required = false, defaultValue = "-1") String id,
                                @RequestParam(required = false, defaultValue = "-1") String priNum) {
        return bjgzInfoService.toDelAppraise(id,priNum);
    }

    /**
     * 帮教工作信息管理管理 - 帮扶 - 帮扶信息 - 社会公益组织 - 列表
     * @param zzType zzType
     * @return List<Map < String,Object>>
     */
    @RequestMapping("/azbj/azbjgl/bjgzgl/getShgyzzInfoList")
    public List<Map<String,Object>> getShgyzzInfoList(
            @RequestParam(required = false, defaultValue = "-1") String zzType) {
        UserDTO user = userService.getAuthentication();
        return bjgzInfoService.getShgyzzInfoList(zzType,user);
    }

    /**
     * 查找服刑人员的鉴定年份
     * @param niandu 鉴定年份
     * @param priNum 服刑人员编号
     * @return Result
     */
    @RequestMapping("/azbj/azbjgl/bjnfcz/findjdnf")
    public Result findjdnf(@RequestParam("niandu") String niandu,@RequestParam("priNum") String priNum) {
        return bjgzInfoService.findjdnf(niandu,priNum);
    }
}